package ca.nanometrics.gflot.sample.client;

import ca.nanometrics.gflot.client.DataPoint;
import ca.nanometrics.gflot.client.ImageDataPoint;
import ca.nanometrics.gflot.client.PlotModel;
import ca.nanometrics.gflot.client.SeriesHandler;
import ca.nanometrics.gflot.client.SeriesType;
import ca.nanometrics.gflot.client.SimplePlot;
import ca.nanometrics.gflot.client.options.AxisOptions;
import ca.nanometrics.gflot.client.options.ImageSeriesOptions;
import ca.nanometrics.gflot.client.options.PlotOptions;

import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Widget;

public class ImageExample
    implements GFlotExample
{
    public String getName()
    {
        return "Image";
    }

    public Widget createExample()
    {
        final PlotModel model = new PlotModel();
        final PlotOptions plotOptions = new PlotOptions();

        // add tick formatter to the options
        plotOptions.setXAxisOptions( new AxisOptions().setMinimum( -8 ).setMaximum( 4 ) );
        plotOptions.setYAxisOptions( new AxisOptions().setMinimum( -8 ).setMaximum( 4 ) );

        // create a series
        SeriesHandler handlerImage = model.addSeries( "Image series" );
        handlerImage.getSeries().setSeriesOptions( SeriesType.IMAGE, new ImageSeriesOptions().setShow( true ).setAlpha(0.5) );
        handlerImage.add( new ImageDataPoint( "images/hs-2004-27-a-large_web.jpg", -2, -2, 2, 2 ) );

        // create a series
        SeriesHandler handlerLine = model.addSeries( "Line series" );
        handlerLine.add( new DataPoint(-8, -8) );
        handlerLine.add( new DataPoint(-6, -4) );
        handlerLine.add( new DataPoint(-2, -8) );
        handlerLine.add( new DataPoint(4, 0) );

        // add data

        SimplePlot plot = new SimplePlot( model, plotOptions );
        plot.setLoadDataImages( true );
        plot.setSize( "400px", "400px" );
        final FlowPanel panel = new FlowPanel();
        panel.add( plot );
        return panel;

    }
}
